Datos Comparativos

Column

País con mayor fecundidad en 2021

País con mayor esperanza de vida 2021

Producto Interno Bruto más alto

Column

País con menor fecundidad 2021

País con menor esperanza de vida 2021

Producto Interno Bruto más bajo

Gráficos Combinación de Variables

Column

Fecundidad y Esperanza de vida según país o continente

Column

GDP y Fecundidad

Column

GDP y Esperanza de vida

Gráficos de Interacción avanzada

Column

Fecundidad, Esperanza y GDP según País, continente y año.

Column

Cantidad de hijos vrs Esperanza de vida

Esperanza de vida vida vrs cantidad de hijos

Tabla Dinámica

---
title: "Relación entre la fecundidad, la esperanza de vida de las mujeres y el Producto interno bruto (GDP)"
author: "Rosalia Carballo"
output: 
  flexdashboard::flex_dashboard:
    orientation: columns
    vertical_layout: fill
    social: menu
    source_code: embed
---

```{r setup, include=FALSE}
library(flexdashboard)
library(tidyverse)
library(readxl)
library(readr)
library(dplyr)
library(ggplot2)
library(ggrepel)
library(countrycode)
library(scales)
library(maps)
library(DT)
library(lorem)
library(png)
library(grid)

# Establecer ruta 
if (is.null(shiny::getDefaultReactiveDomain())) {
  knitr::opts_knit$set(root.dir = rprojroot::find_rstudio_root_file())
}
```



```{r}

Datos_FEGDP <- readr::read_csv("Datos/Base_Datos_depurada/base_completa.csv", locale = locale(encoding = "UTF-8"))


Vars <- paste0(c("esperanza_de_vida", "producto_por_capita", "nacimientos_por_mujer", "continente", "gdp_grupo")) 

```


Datos Comparativos {data-icon="fa-data"}
=======================================================================


Column {data-width=350}
-----------------------------------------------------------------------



### País con mayor fecundidad en 2021

```{r}

# Filtrar por año
top_pais <- Datos_FEGDP %>%
  filter(year == 2021) %>%
  arrange(desc(nacimientos_por_mujer)) %>%
  slice(1)

  
# Crear una columna con el HTML de la bandera (Flagpedia usa códigos ISO en minúscula)
codigo_iso <- countrycode(top_pais$country, "country.name", "iso2c") %>% tolower()
top_pais$Bandera <- paste0('<img src="https://flagcdn.com/w80/', codigo_iso, '.png" height="30">')

# Seleccionar columnas a mostrar
top_pais_vis <- top_pais %>%
  select(País = country,
         Año = year,
         `Hijos` = nacimientos_por_mujer,
         Bandera)

# Mostrar como tabla interactiva con imagen embebida
datatable(top_pais_vis, escape = FALSE, options = list(dom = 't', paging = FALSE))
```

### País con mayor esperanza de vida 2021

```{r}

# Filtrar el país con mayor número de hijos por mujer en 2021
top_pais <- Datos_FEGDP %>%
 filter(year == 2021) %>%
  arrange(desc(esperanza_de_vida)) %>%
  slice(1)

# Crear una columna con el HTML de la bandera (Flagpedia usa códigos ISO en minúscula)
codigo_iso <- countrycode(top_pais$country, "country.name", "iso2c") %>% tolower()
top_pais$Bandera <- paste0('<img src="https://flagcdn.com/w80/', codigo_iso, '.png" height="30">')

# Seleccionar columnas a mostrar
top_pais_vis <- top_pais %>%
  select(País = country,
         Año = year,
         `Edad` = esperanza_de_vida,
         Bandera)

# Mostrar como tabla interactiva con imagen embebida
datatable(top_pais_vis, escape = FALSE, options = list(dom = 't', paging = FALSE))

```

### Producto Interno Bruto más alto

```{r}

# Filtrar el país con mayor número de hijos por mujer en 2021
top_pais <- Datos_FEGDP %>%
  filter(year == 2021) %>%
  arrange(desc(producto_por_capita)) %>%
  slice(1)

# Crear una columna con el HTML de la bandera (Flagpedia usa códigos ISO en minúscula)
codigo_iso <- countrycode(top_pais$country, "country.name", "iso2c") %>% tolower()
top_pais$Bandera <- paste0('<img src="https://flagcdn.com/w80/', codigo_iso, '.png" height="30">')

# Seleccionar columnas a mostrar
top_pais_vis <- top_pais %>%
  select(País = country,
         Año = year,
         `GDP` = producto_por_capita,
         Bandera)

# Mostrar como tabla interactiva con imagen embebida
datatable(top_pais_vis, escape = FALSE, options = list(dom = 't', paging = FALSE))


```

Column {data-width=350}
-----------------------------------------------------------------------
### País con menor fecundidad 2021

```{r}

  
# Filtrar el país con menor número de hijos por mujer en 2021
bottom_pais <- Datos_FEGDP %>%
  filter(year == 2021) %>%
  arrange(nacimientos_por_mujer) %>%
  slice(1)

# Obtener el código ISO del país en minúsculas
codigo_iso_bottom <- countrycode(bottom_pais$country, "country.name", "iso2c") %>% tolower()

# Agregar la bandera como imagen HTML
bottom_pais$Bandera <- paste0('<img src="https://flagcdn.com/w80/', codigo_iso_bottom, '.png" height="30">')

# Seleccionar columnas a mostrar
bottom_pais_vis <- bottom_pais %>%
  select(País = country,
         Año = year,
         `Hijos por mujer` = nacimientos_por_mujer,
         Bandera)

# Mostrar como tabla interactiva
datatable(bottom_pais_vis, escape = FALSE, options = list(dom = 't', paging = FALSE))

```

### País con menor esperanza de vida 2021

```{r}

# Filtrar el país con menor número de hijos por mujer en 2021
bottom_pais <- Datos_FEGDP %>%
  filter(year == 2021) %>%
  arrange(esperanza_de_vida) %>%
  slice(1)

# Obtener el código ISO del país en minúsculas
codigo_iso_bottom <- countrycode(bottom_pais$country, "country.name", "iso2c") %>% tolower()

# Agregar la bandera como imagen HTML
bottom_pais$Bandera <- paste0('<img src="https://flagcdn.com/w80/', codigo_iso_bottom, '.png" height="30">')

# Seleccionar columnas a mostrar
bottom_pais_vis <- bottom_pais %>%
  select(País = country,
         Año = year,
         `Edad` = esperanza_de_vida,
         Bandera)

# Mostrar como tabla interactiva
datatable(bottom_pais_vis, escape = FALSE, options = list(dom = 't', paging = FALSE))

```

### Producto Interno Bruto más bajo

```{r}

# Filtrar el país con menor número de hijos por mujer
bottom_pais <- Datos_FEGDP %>%
  filter(year == 2021) %>%
  arrange(producto_por_capita) %>%
  slice(1)

# Obtener el código ISO del país en minúsculas
codigo_iso_bottom <- countrycode(bottom_pais$country, "country.name", "iso2c") %>% tolower()

# Agregar la bandera como imagen HTML
bottom_pais$Bandera <- paste0('<img src="https://flagcdn.com/w80/', codigo_iso_bottom, '.png" height="30">')

# Seleccionar columnas a mostrar
bottom_pais_vis <- bottom_pais %>%
  select(País = country,
         Año = year,
         `GDP` = producto_por_capita,
         Bandera)

# Mostrar como tabla interactiva
datatable(bottom_pais_vis, escape = FALSE, options = list(dom = 't', paging = FALSE))

```

Gráficos Combinación de Variables  {data-icon="fa-signal"}
=======================================================================


Column {data-width=350}
-----------------------------------------------------------------------

### Fecundidad y Esperanza de vida según país o continente

```{r}

  datos_filtrados <- Datos_FEGDP
  
ggplot(datos_filtrados, aes(x = nacimientos_por_mujer, y = esperanza_de_vida)) +
  geom_point(alpha = 0.4, color = "darkred") +
  geom_smooth(method = "lm", se = FALSE, color = "black") +
  labs(title = "Relación entre hijos por mujer 
       y esperanza de vida", x = "Hijos por mujer", y = "Esperanza de vida") +
  theme_minimal() +
  theme(
    plot.title = element_text(size = 20, face = "bold"),
    axis.title = element_text(size = 15)
  )


```

Column {data-width=350 data-height=500}
-----------------------------------------------------------------------

### GDP y Fecundidad

```{r}


  datos_filtrados <- Datos_FEGDP
   
ggplot(datos_filtrados, aes(x = producto_por_capita, y = nacimientos_por_mujer)) +
  geom_point(alpha = 0.4, color = "darkgreen") +
  scale_x_log10() +
  geom_smooth(method = "loess", se = FALSE, color = "black") +
  labs(title = "Relación entre GDP y Cantidad de hijos por mujer", x = "GDP per cápita (log)", y = "Hijos por mujer") +
  theme_minimal()+  
  theme(
    plot.title = element_text(size = 20, face = "bold"),
    axis.title = element_text(size = 15)
  )

```

Column {data-width=350}
-----------------------------------------------------------------------

### GDP y Esperanza de vida

```{r}

  datos_filtrados <- Datos_FEGDP

ggplot(datos_filtrados, aes(x = producto_por_capita, y = esperanza_de_vida)) +
  geom_point(alpha = 0.3, color = "darkblue") +
  scale_x_log10() +
  geom_smooth(method = "loess", se = FALSE, color = "black") +
  labs(title = "Relación entre GDP per cápita 
       y esperanza de vida", x = "GDP per cápita (log)", y = "Esperanza de vida") +
  theme_minimal()+
  theme(
    plot.title = element_text(size = 20, face = "bold"),
    axis.title = element_text(size = 15)
  )

```


Gráficos de Interacción avanzada {data-icon="fa-signal"}
=======================================================================


Column {data-width=450}
-----------------------------------------------------------------------

### Fecundidad, Esperanza y GDP según País, continente y año.


```{r}

  
  datos_filtrados <- Datos_FEGDP %>%
    filter(
      !is.na(producto_por_capita), 
      !is.na(nacimientos_por_mujer), 
      !is.na(esperanza_de_vida)
)

# Gráfico
ggplot(datos_filtrados, aes(x = producto_por_capita, 
                            y = nacimientos_por_mujer, 
                            size = esperanza_de_vida, 
                            color = esperanza_de_vida)) +
  geom_point(alpha = 0.8) +
  scale_x_log10(labels = dollar_format(prefix = "$")) +
  scale_color_gradient(low = "red", high = "blue") +
  labs(title = "Relación entre GDP, fecundidad y esperanza de vida",
       x = "Producto Interno Bruto per cápita (log)",
       y = "Hijos por mujer",
       color = "Esperanza de vida (años)",
       size = "Esperanza de vida") +
  theme_minimal()+
  theme(
    plot.title = element_text(size = 15, face = "bold"),
    axis.title = element_text(size = 10)
  )

```

Column {data-width=250}
-----------------------------------------------------------------------

### Cantidad de hijos vrs Esperanza de vida

```{r}

   hijos <- 2
  
  # Filtrar datos según los inputs
  datos_filtrados <- Datos_FEGDP %>%
    filter(!is.na(nacimientos_por_mujer),
      !is.na(esperanza_de_vida)
    ) %>%
    filter(abs(nacimientos_por_mujer - hijos) < 0.2)

#Gráfico
 ggplot(Datos_FEGDP, aes(x = nacimientos_por_mujer, y = esperanza_de_vida)) +
    geom_point(alpha = 0.3, color = "gray") +
    geom_point(data = datos_filtrados, aes(x = nacimientos_por_mujer, y = esperanza_de_vida), 
               color = "red", size = 3) +
    geom_smooth(method = "loess", se = FALSE, color = "black") +
    labs(
      title = paste("Posible esperanza de vida según hijos por mujer",
                    if (!is.na(hijos)) paste0("~", hijos) else ""),
      x = "Hijos por mujer",
      y = "Esperanza de vida (años)"
    ) +
    theme_minimal()

```

### Esperanza de vida vida vrs cantidad de hijos

```{r}

  
   vida <- 85
  
  # Filtrar datos según los inputs
  datos_filtrados <- Datos_FEGDP %>%
    filter(!is.na(nacimientos_por_mujer),
      !is.na(esperanza_de_vida)
    ) %>%
    filter(abs(esperanza_de_vida - vida) < 1)

#Gráfico
 ggplot(Datos_FEGDP, aes(x = esperanza_de_vida, y = nacimientos_por_mujer)) +
    geom_point(alpha = 0.3, color = "pink") +
    geom_point(data = datos_filtrados, aes(x = esperanza_de_vida, y = nacimientos_por_mujer), 
               color = "blue", size = 3) +
    geom_smooth(method = "loess", se = FALSE, color = "black") +
    labs(
      title = paste("Hijos por mujer según esperanza de vida",
                    if (!is.na(vida)) paste0("~", vida) else ""),
      x = "Esperanza de vida (años)",
      y = "Hijos por mujer"
    ) +
    theme_minimal()

```


Tabla Dinámica {data-icon="fa-table"}
=======================================================================

```{r}

datatable(Datos_FEGDP,
          caption= "Datos fertilidad y esperanza de vida de mujeres y Producto Interno Bruto",
          rownames= TRUE,
          filter= "top",
          options= list(pageLength = 25)
)
```